package 数据结构与算法.排序算法;

import java.time.LocalDateTime;
import java.util.Arrays;

/**
 * O(n^2)
 */
public class SelectSort {
    public static void main(String[] args) {
//        int[] arr={101,34,119,1};
//        System.out.println("排序前：");
//        System.out.println(Arrays.toString(arr));

        int[] arr = new int[80000];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 8000000);
        }

        System.out.println("排序前的时间："+ LocalDateTime.now());

        selectSort(arr);

        System.out.println("排序后的时间："+ LocalDateTime.now());

//        System.out.println("排序后：");
//        System.out.println(Arrays.toString(arr));

    }

    //选择排序
    public static void selectSort(int[] arr){

        for (int i = 0; i < arr.length - 1; i++) {
            //第一轮
            int minIndex=i;
            int min=arr[i];
            for (int j = i+1; j < arr.length; j++) {
                if (min>arr[j]){
                    min=arr[j];
                    minIndex=j;
                }
            }
            //将最小值放在arr[i],即交换
            if (minIndex!=i){
                arr[minIndex]=arr[i];
                arr[i]=min;
            }
//            System.out.println("第"+(i+1)+"轮后：");
//            System.out.println(Arrays.toString(arr));
        }

    }
}
